#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>

void test_file_flags() {
	    printf("=== 测试文件状态标志 ===\n");
	        
	        // 创建测试文件
		     int fd = open("test_flags.txt", O_CREAT | O_RDWR, 0644);

		         if (fd == -1) {
		                 perror("open");
		                         exit(EXIT_FAILURE);
		                             }
		                                 
		                                     // 获取当前文件状态标志
		                                         int flags = fcntl(fd, F_GETFL);
		                                             printf("当前文件标志: 0x%x\n", flags);
		                                                 
		                                                     // 检查是否为阻塞模式
		                                                         if ((flags & O_NONBLOCK) == 0) {
		                                                                 printf("当前为阻塞模式\n");
		                                                                     } else {
		                                                                             printf("当前为非阻塞模式\n");
		                                                                                 }
		                                                                                     
		                                                                                         // 添加非阻塞标志
		                                                                                             printf("设置非阻塞标志...\n");
		                                                                                                 fcntl(fd, F_SETFL, flags | O_NONBLOCK);
		                                                                                                     
		                                                                                                         // 验证设置
		                                                                                                             flags = fcntl(fd, F_GETFL);
		                                                                                                                 printf("设置后文件标志: 0x%x\n", flags);
		                                                                                                                     
		                                                                                                                         if ((flags & O_NONBLOCK) != 0) {
		                                                                                                                                 printf("非阻塞标志设置成功\n");
		                                                                                                                                     } else {
		                                                                                                                                             printf("非阻塞标志设置失败\n");
		                                                                                                                                                 }
		                                                                                                                                                     
		                                                                                                                                                         close(fd);
		                                                                                                                                                         }
		
		                                                                                                                                                         int main() {
		                                                                                                                                                             test_file_flags();
		                                                                                                                                                                 return 0;
		                                                                                                                                                                 }
